/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
/**
 * Note: The returned array must be malloced, assume caller calls free().
 */

// 前序遍历---和学到的一样
// 但是这个题目的不同之处在于: 他要求我们要生成一个数组,将前序遍历的值存放在一个数组里面再返回,然后打印
// 后面的中序遍历和后序遍历题目也是要这么要求的

void preOrder (struct TreeNode* root , int* arr , int* returnSize)
{

    if (root == NULL)
    {

        return ;

    }

    arr [(*returnSize)++] = root -> val ;

    preOrder (root -> left , arr , returnSize) ;

    preOrder (root -> right , arr , returnSize) ;

}

int* preorderTraversal(struct TreeNode* root, int* returnSize) 
{

    int* arr = (int*) malloc (sizeof (int) * 101) ;

    *returnSize = 0 ;

    preOrder (root , arr , returnSize) ;

    return arr ;

}